package com.wyp.design.principle.openclose;

/**
 * @author: yipeng.wang01@hand-china.com-25490
 * @TIME: 2019/12/24/15:46
 **/
public class Test {
    public static void main(String[] args) {
        ICourse iCourse = new JavaCourse("java", "123455", 123455.0);
        System.out.println(iCourse.getName() + "---" + iCourse.getPrice() + "----" + iCourse.getId());
        /**
         * 现在有一个功能：想给商品打折，打折原则，不能修改底层方法，所以只能进行扩展，实现基础类，再次基础上进行拓展。
         */
        //进行测试折扣，可以使用父类变量指向子类引用的方式
        ICourse course = new DiscountJavaCourse("java", "12345566", 1234.0);

        //父类　实例 = new 子类（）
        //实例可以调用父类中特有的方法（未在子类中覆盖的方法）
        //实例可以调用子类中覆盖父类的方法
        //但不可以调用子类中特有的方法（即父类中没有的方法）

        //为了能访问到DiscountJavaCourse中原价方法，需要将接口进行向下转型,这里我们发现course是获取不到originalPrice方法
        DiscountJavaCourse javaCourse = (DiscountJavaCourse) course;
        System.out.println(javaCourse.discountPrice() + "----" + course.getPrice());
    }
}
